const app = getApp()

/**
 * @param {*} url 请求路径
 * @param {*} options 请求配置 如：请求方式、请求数据
 * @description 请求主体
 */
const request = (url, options) => {
  return new Promise((resolve, reject) => {
    wx.showLoading({
      title: '加载中',
    })
    wx.request({
      url: `${app.globalData.host}${url}`,
      method: options.method,
      data: options.method === 'GET' ? options.data : JSON.stringify(options.data),
      header: {
        'Content-Type': 'application/json; charset=UTF-8',
        'token': 'token'
      },
      success(request) {
        if (request.data.code === 200) {
          wx.hideLoading()
          resolve(request.data.data)
        } else {
          wx.hideLoading()
          reject(request.data)
        }
      },
      fail(error) {
        wx.hideLoading()
        reject(error.data)
      }
    })
  })
}

/**
 * @param {*} url 请求路径
 * @param {*} options 请求数据
 * @description GET请求
 */
const get = (url, options = {}) => {
  return request(url, { method: 'GET', data: options })
}

/**
 * @param {*} url 请求路径
 * @param {*} options 请求数据
 * @description POST请求
 */
const post = (url, options) => {
  return request(url, { method: 'POST', data: options })
}

/**
 * @param {*} url 请求路径
 * @param {*} options 请求数据
 * @description PUT请求
 */
const put = (url, options) => {
  return request(url, { method: 'PUT', data: options })
}

/**
 * @param {*} url 请求路径
 * @param {*} options 请求数据
 * @description DELETE请求
 */
const remove = (url, options) => {
  return request(url, { method: 'DELETE', data: options })
}

module.exports = {
  get,
  post,
  put,
  remove
}
